<?php
declare (strict_types = 1);

namespace app\access\controller;

use thans\jwt\facade\JWTAuth;
use think\facade\Db;
use think\Request;

/**
 * 展示权限的菜单
 * Class Menu
 * @package app\access\controller
 */

class Menu
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //根据不同的用户、返回不同的菜单列表

        $payload = JWTAuth::auth();
        $user_id = $payload['id']->getValue();// 获取登录的用户id
        # 根据用户查询对应的菜单列表

        # 原生sql、昨天
        # DB
        $data = Db::name('admin')
            ->join('admin_role','admin.id=admin_role.admin_id') // 根据用户id、查询角色id

            ->where('admin.id',$user_id)->find();

        # 根据角色id、查询对应的菜单
        $role_id = $data['role_id'];

        $menu = Db::name('role_auth')
            ->join('auth','auth.id=role_auth.auth_id')
            ->where('role_auth.role_id',$role_id)// 角色id
            ->select();
        # 所有的权限
        # 父子级的结构
//        用户管理
//        'children' => 删除用户

        $parent_data = recursion_handel_data($menu);
        foreach ($parent_data as $value) {
            echo $value['auth_name'];
            foreach ($value['children'] as $val) {
                echo $val['auth_name'];
            }
        }

        # 树形的结构
//        用户管理
//        -- 删除用户
//        -- 创建用户
        # 利用递归

        $tree_data = recursion_tree($menu);
        foreach ($tree_data as $value) {
            echo str_repeat('----',$value['level']).$value['auth_name']."\n";
        }
        die();
        dd($tree_data);

        return  "菜单列表";
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
